package com.geeguo.ebuilder.operation.business.system.webmodule.service;

import com.geeguo.ebuilder.operation.base.security.model.LoginUser;
import com.geeguo.ebuilder.operation.business.system.webmodule.model.WebModuleCO;
import com.geeguo.ebuilder.operation.business.system.webmodule.model.WebModuleEntity;
import com.geeguo.ebuilder.operation.business.system.webmodule.model.WebModuleVO;

import java.util.List;
import java.util.Set;

public interface WebModuleService {

    List<WebModuleVO> listAll();
    List<WebModuleVO> listAllTree();
    List<WebModuleVO> listByParent(String parentId);
    List<WebModuleVO> listByUser(LoginUser loginUser);
    Set<String> listPermissionCodeByUser(LoginUser loginUser);

    WebModuleVO get(String id);
    WebModuleCO getCached(String id);
    String getFullPath(String id);
    int getMaxSequence(String id);

    boolean save(WebModuleEntity entity);
    boolean update(WebModuleEntity current, WebModuleEntity old);
    boolean remove(String id);

    boolean existsChild(String id);
    boolean existsName(String name);

    void removeCachedUserWebModules(LoginUser loginUser);
}
